package exception;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

/**
 * JDK7之后推出了一个新的特性:自动关闭特性
 * 使得我们在IO操作中使用异常处理机制关闭流这类操作的代码书写得到简化。
 * 语法:
 * try(
 *  定义需要在finally中调用close()关闭的流
 * ){
 *  IO操作
 * }catch(XXXException e){
 *     ...
 * }
 */
public class AutoCloseableDemo {
    public static void main(String[] args) {
        try(
                //只有实现了AutoCloseable接口的类才可以在这里定义并初始化
                //编译器编译后会改为在finally中close它
                //相当于最终代码会改为FinallyDemo2.java的样子
                FileOutputStream fos = new FileOutputStream("fos.dat");
        ){
            String line = "abc";
            fos.write(line.getBytes(StandardCharsets.UTF_8));

        }catch(IOException e){
            e.printStackTrace();
        }
    }
}
